﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Siderys.Blog.VirtualEarth.DataMap;
using System.Globalization;

namespace Siderys.Blog.VirtualEarth.UI.UserControl
{
    public partial class LocationsVirtualEarth : System.Web.UI.UserControl
    {
        string mScriptMapa = "function LoadMapa(){var lVeLatLOng = new VELatLong({0}, {1});GetMap(lVeLatLOng,{2});AddPushpin(lVeLatLOng,'{3}','{4}');};";
        private string mNombreLista = string.Empty;

        public string NombreLista
        {
            get { return mNombreLista; }
            set { mNombreLista = value; }
        }

        public LocationsVirtualEarth()
        {
            //Constructor por defecto.
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "VirtualEarth", "http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2");
            if (!IsPostBack)
            {
                CargarDatosMapas();
            }  
        }


        private void CargarDatosMapas()
        {
            List<ElementoMapa> lElementosMapas = Fachada.GetPuntosMapa(mNombreLista);
            ddlPuntos.Items.Clear();
            ddlPuntos.Items.Add("Select a point");
            if (lElementosMapas != null)
            {
                foreach (ElementoMapa lElemento in lElementosMapas)
                {
                    ddlPuntos.Items.Add(new ListItem(lElemento.Nombre, lElemento.Id.ToString()));
                }
            }
        }

        protected void ddlPuntosMapas_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!ddlPuntos.SelectedItem.Text.Equals("Select a point"))
            {
                int lIdElemento = Convert.ToInt32(ddlPuntos.SelectedItem.Value);
                ElementoMapa lElementoEnMapa = Fachada.GetHPuntoMapaPorId(lIdElemento.ToString(), mNombreLista);
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MapaVirtualEarth", ArmarPuntoParaMapa(lElementoEnMapa), true);
                if (!lElementoEnMapa.Direccion1.Equals(string.Empty))
                {
                    lblDireccion.Text = lElementoEnMapa.Direccion1;
                }
            }
            else
            {
                lblDireccion.Text = string.Empty;
            }
        }

        private string ArmarPuntoParaMapa(ElementoMapa pElemento)
        {
            string lRetorno = mScriptMapa;
            CultureInfo us = new CultureInfo("en-US");
            if (pElemento != null)
            {
                lRetorno = lRetorno.Replace("{0}", pElemento.Latitud.ToString());
                lRetorno = lRetorno.Replace("{1}", pElemento.Longitud.ToString());
                lRetorno = lRetorno.Replace("{2}", "5");
                lRetorno = lRetorno.Replace("{3}", pElemento.Nombre);
                lRetorno = lRetorno.Replace("{4}", ArmarTextoDescripcionHospitales(pElemento));                
            }
            return lRetorno;         
        }

        private string ArmarTextoDescripcionHospitales(ElementoMapa pElemento)
        {
            string lRetorno = string.Empty;
            if (!pElemento.Direccion1.Equals(string.Empty))
            {
                lRetorno += "<b>Dirección 1: </b>" + pElemento.Direccion1 + "<br/>";
            }
            if (!pElemento.Telefono.Equals(string.Empty))
            {
                lRetorno += "<b>Telefono: </b>" + pElemento.Telefono + "<br/>";
            }
            return lRetorno;
        }
    }
}